package creadores;

import java.util.ArrayList;

import modelo.Bonus;
import modelo.Escenario;
import utilitarios.Bernoulli;

import utilitarios.PuntoXY;

public class FabricaBonus {

	private int cantidadBonus;
	private Escenario escenario;
	private ArrayList<CreadorBonus> catalogo = new ArrayList<CreadorBonus>();

	public FabricaBonus(int cantidadBonusACrear, Escenario escenario) {
		this.cantidadBonus = cantidadBonusACrear;
		this.escenario = escenario;
		this.cargarCatalogo();
	}

	private void cargarCatalogo() {
		catalogo.add(new CreadorBonusVida());
		catalogo.add(new CreadorBonusAtaque());
	}

	public void vivir() {
		if (this.cantidadBonus == 0)
			return;
		else {
			int tipoBonus = (int) (Math.random() * catalogo.size());
			CreadorBonus creador = catalogo.get(tipoBonus);
			Bonus bonus = creador.crear(escenario, this.generarPosicionAleatoria());
			if (Bernoulli.bernoulli( Bonus.getProbabilidadAparicion())) {
				escenario.agregarObjeto(bonus);
				this.cantidadBonus -= 1;
			}

		}
		
	}

	private PuntoXY generarPosicionAleatoria() {
		int maxAncho = escenario.getLongitud();
		int maxAlto = escenario.getAltitud();
		double randomX = Math.random() * maxAncho;
		double randomY = Math.random() * maxAlto;
		return (new PuntoXY(randomX, randomY));

	}
	
}
